package com.tiance.demo.service.mysql.bo.pageundolog;

/**
 * undo日志的段头(segment header)
 */
public class UndoLogSegmentHeader {

    /**
     * 一个segment header是18字节
     */
    public static final int SIZE = 30;

    private byte[] bytes;
    /**
     * 序列1 <br />
     * 2字节, 起始于: 2字节<br />
     * 本Undo页面链表处在什么状态:
     * <ol>
     *     <li>TRX_UNDO_ACTIVE</li>
     *     <li>TRX_UNDO_CACHED</li>
     *     <li>TRX_UNDO_TO_FREE</li>
     *     <li>TRX_UNDO_TO_PURGE</li>
     *     <li>TRX_UNDO_PREPARED</li>
     * </ol>
     *  <a>https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c923cf3f265da60fb3bea67</a>
     */
    private int trxUndoState;
    /**
     * 序列2 <br />
     * 2字节, 起始于: 2字节<br />
     * 表示在当前页面中是从什么位置开始存储undo日志的，或者说表示第一条undo日志在本页面中的起始偏移量
     */
    private int trxUndoLastLog;
    /**
     * 序列3 <br />
     * 2字节, 起始于: 2字节<br />
     * 表示在当前页面中是从什么位置开始存储undo日志的，或者说表示第一条undo日志在本页面中的起始偏移量
     */
    private String trxUndoFsegHeader;

    /**
     * 序列4 <br />
     * 2字节, 起始于: 2字节<br />
     * 表示在当前页面中是从什么位置开始存储undo日志的，或者说表示第一条undo日志在本页面中的起始偏移量
     */
    private int trxUndoPageList;

    public byte[] getBytes() {
        return bytes;
    }

    public void setBytes(byte[] bytes) {
        this.bytes = bytes;
    }

    public int getTrxUndoState() {
        return trxUndoState;
    }

    public void setTrxUndoState(int trxUndoState) {
        this.trxUndoState = trxUndoState;
    }

    public int getTrxUndoLastLog() {
        return trxUndoLastLog;
    }

    public void setTrxUndoLastLog(int trxUndoLastLog) {
        this.trxUndoLastLog = trxUndoLastLog;
    }

    public String getTrxUndoFsegHeader() {
        return trxUndoFsegHeader;
    }

    public void setTrxUndoFsegHeader(String trxUndoFsegHeader) {
        this.trxUndoFsegHeader = trxUndoFsegHeader;
    }

    public int getTrxUndoPageList() {
        return trxUndoPageList;
    }

    public void setTrxUndoPageList(int trxUndoPageList) {
        this.trxUndoPageList = trxUndoPageList;
    }
}
